using System;
using System.Collections;
using System.Collections.Generic;

namespace Dida
{
	public interface ISet<T> : ICollection<T>, ICollection, ICloneable
	{
		/// <summary>
		/// Adds the given value to this set. If a similar item already exists,
		/// the item won't be added.
		/// </summary>
		/// <param name="value">The value to insert.</param>
		/// <returns>true if the item was successfully added, 
		/// false if a similar value already exists in this set.</returns>
		new bool Add(T value);

		/// <summary>
		/// Gets the elements of this set that are not part of set b.
		/// </summary>
		/// <param name="b">The set of values that should not be included
		/// in the result.</param>
		/// <returns>The set that contains all values in this set,
		/// that don't occur in b.</returns>
		ISet<T> GetDifference(ISet<T> b);
	}
}